This invention relates, in general, to using data pipes to transport data from one application to another application and, in particular, to transitioning from the use of a local data pipe to the use of a cross-system data pipe.
Data piping between two units of work (e.g., a writer application and a reader application) includes the writer application writing data to a pipe and the reader application reading data from the pipe. The pipe is a conduit of a stream of data. As data is written to the pipe, the data is read from the pipe.
Within a single system (i.e., one operating system image), data piping is typically implemented using a FIFO buffer queue structure located in inboard memory. The pipe is accessible to both applications participating in the piping. Further, multiple writer and reader applications of the same system can access the same pipe.
Data piping can also be performed between applications on different systems using an external shared memory (i.e., cross-system data piping). This is described in co-pending, commonly assigned, U.S. patent application Ser. No. 08/846,718, now U.S. Pat. No. 6,092,166 filed Apr. 30, 1997, Bobak et al., entitled xe2x80x9cCross-System Data Piping Method Using An External Shared Memory,xe2x80x9d which is hereby incorporated herein by reference in its entirety. (The discussion of application Ser. No. 08/846,718 in this Background section is not an admission that application Ser. No. 08/846,718 is prior art.)
If an external shared memory is used for cross-system data piping in, for instance, a parallel systems processing complex (SYSPLEX) environment, there may be potential shortcomings if all of the piping applications, even those that are initiated and communicate with one another on the same system (i.e., local applications), use the external shared memory. For instance, the external shared memory could become overloaded, or the needless use of the external shared memory by local applications could cause the misappropriation of system resources.
In an effort to alleviate the above problems, users may try starting two piping subsystems on each system. One that handles the local applications, thereby enabling the use of local pipes; and another that handles the cross-system applications, thereby enabling the use of cross-system pipes. However, this can cause additional and/or different problems. For instance, additional resources are required to run the additional subsystem. Further, a great deal of complexity is added when two subsystems are used and need to be managed. Complexity is also added in the management of the jobs that use the subsystems. For example, if a user knows that he wants to use the local system, both applications would need to be guaranteed to execute on a single system that had the piping subsystem up and running.
Thus, a need still exists for a capability which allows the external shared memory to be used wisely for data piping, without requiring additional subsystems to be started and managed. In particular, a need exists for a capability that enables applications to be dynamically transitioned from using a local pipe to using a cross-system pipe, when such a need arises. A further need exists for a transitioning capability that uses system resources wisely and does not add complexity for the users.
The shortcomings of the prior art are overcome and additional advantages are provided through the provision of a data piping method. In one example, a first application of a first system accesses a data pipe that uses local media of the first system for the data pipe. When a second application on a second system is to access the data pipe, the data pipe is transitioned from a local pipe, in which the local media is used for the data pipe, to a cross-system pipe, in which an alternative non-local media is used for the data pipe.
In one example, the first application is transitioned from using the local pipe to using the cross-system pipe. When the first application is a reader, the transitioning includes, for instance, reading, by the reader, data from the local pipe until an empty state is obtained for the local pipe; and accessing, by the reader, the cross-system pipe when the empty state is obtained.
In another example, when the first application is a writer, the transitioning includes, for instance, determining that any readers associated with the local pipe have transitioned; reading from the local pipe to determine if data is within the local pipe; writing any data determined to be within the local pipe to the cross-system pipe; and accessing, by the writer, the cross-system pipe, when the local pipe is empty.
In another aspect of the present invention, a data piping system is provided. In one embodiment, the system includes a data pipe that uses local media of a first system for the data pipe. It further includes means for transitioning, when a second application on a second system is to access the data pipe, the data pipe from a local pipe, in which the local media is used for the data pipe, to a cross-system pipe, in which an alternative non-local media is used for the data pipe.
In yet another aspect of the present invention, an article of manufacture is provided. The article of manufacture includes at least one computer useable medium having computer readable program code means embodied therein for causing the piping of data. The computer readable program code means in the article of manufacture includes, for instance, computer readable program code means for causing a computer to effect accessing, by a first application of a first system, a data pipe that uses local media of the first system for the data pipe; and computer readable program code means for causing a computer to effect transitioning, when a second application on a second system is to access the data pipe, the data pipe from a local pipe, in which local media is used for the data pipe, to a cross-system pipe, in which an alternative non-local media is used for the data pipe.
The transitioning capability of the present invention advantageously enables the dynamic transitioning of a local pipe to a cross-system pipe. Further, it allows any applications connected to the local pipe to be transitioned from using the local pipe to using the cross-system pipe, when the cross-system pipe is to be used. The transitioning capability of the present invention does not require application changes and does not require the start up and management of additional subsystems (e.g., piping subsystems). It does allow, however, an alternative non-local media to be used wisely and it enables the appropriate use of resources. It does not add complexity for the users, since the users need not care nor manage on which systems their applications execute. The transitioning capability of the present invention also allows the dynamic transitioning from a cross-system pipe to a local pipe, when an application disconnects from the cross-system pipe and all remaining connections to the pipe are on a single system.
Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.